var path = require('path')
var webpack = require('webpack')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var FileManagerPlugin = require('filemanager-webpack-plugin')


var NODE_ENV = process.env.NODE_ENV
var apiUrl = ''
switch (NODE_ENV) {
	case 'dev':
		apiUrl = '"http://openapi.devch.qiaofangcloud.cn/channel-openapi"'
		break;
	case 'test':
		apiUrl = '"http://openapi.devch.qiaofangcloud.cn/channel-openapi"'
		break;
	case 'uat':
		apiUrl = '"http://apich.qfstatic.com/channel-openapi"'
		break;
	case 'prd':
		apiUrl = '"http://qiaoxin.apich.qfstatic.com/channel-openapi"'
		break;
	default:
		apiUrl = '"http://openapi.devch.qiaofangcloud.cn/channel-openapi"'
		break;
}


module.exports = {
	entry: './src/main.js',
	output: {
		path: path.resolve(__dirname, NODE_ENV === 'development' ? '' : './dist'),
		publicPath: '',
		filename: NODE_ENV === 'development' ? 'build-[hash:10].js' : '[name].[chunkhash].js'
	},
	module: {
		rules: [{
			test: /\.vue$/,
			loader: 'vue-loader',
			options: {
				loaders: {
					'scss': 'vue-style-loader!css-loader!sass-loader',
					'sass': 'vue-style-loader!css-loader!sass-loader?indentedSyntax'
				}
			}
		},
		{
			test: /config.js$/,
			loader: 'webpack-replace',
			query: {
				search: 'APIURLCONFIG',
				replace: apiUrl
			}
		},
		{
			test: /\.js$/,
			loader: 'babel-loader',
			options: {
				presets: ['es2015'],
				plugins:['syntax-dynamic-import']
			},
			exclude: /node_modules/
		}, {
			test: /\.css$/,
			loader: 'style-loader!css-loader'
		}, {
			test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
			loader: 'url-loader?limit=10000&minetype=application/font-woff'
		}, {
			test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
			loader: 'file-loader'
		}, {
			test: /\.(png|jpg)$/,
			loader: 'url-loader?limit=204800' // 内联的base64的图片地址，图片要小于200k，直接的url的地址则不解析
		}
		]
	},
	resolve: {
		alias: {
			'vue$': 'vue/dist/vue.common.js',
			'@':path.resolve(__dirname, 'src')
		}
	},
	devServer: {
		historyApiFallback: true,
		noInfo: true
	},
	performance: {
		hints: false
	},
	devtool: '#eval-source-map',
	plugins: [
		new webpack.ProvidePlugin({
			$: "jquery",
			jQuery: "jquery"
		}),
		new HtmlWebpackPlugin({
			filename: 'first.html',
			template: path.resolve(__dirname, 'first.html'),
			inject: true,
			minify: {
				removeComments: true,
				collapseWhitespace: true
				// more options:
				// https://github.com/kangax/html-minifier#options-quick-reference
			},
			// necessary to consistently work with multiple chunks via CommonsChunkPlugin
			chunksSortMode: 'dependency'
		})
	]
}


if (process.env.NODE_ENV !== 'development') {
	module.exports.devtool = '#source-map'
	// http://vue-loader.vuejs.org/en/workflow/production.html
	module.exports.plugins = (module.exports.plugins || []).concat([
		new webpack.DefinePlugin({
			'process.env': {
				NODE_ENV: '"production"'
			}
		}),
		new webpack.optimize.UglifyJsPlugin({
			sourceMap: true,
			compress: {
				warnings: false
			}
		}),
		new webpack.LoaderOptionsPlugin({
			minimize: true
		}),
		new FileManagerPlugin({
			onEnd: {
				copy: [
					{ source: 'auth_v10.html', destination: 'dist' },
					{ source: 'index.html', destination: 'dist' },
					{ source: 'getWxOpenid.html', destination: 'dist' },
					{ source: 'src/assets', destination: 'dist/src/assets' },
				],
				archive: [
					{ source: 'dist', destination: 'vendor-h5.zip' },
				]
			}
		})
	])
}